<?php

/**
 * @author PeoneEr
 * @package aion personal cabinet v1.0
 * @copyright Aion Factory Inc. 2010-2011
 * @license GNU v3
 * @link Ai-Factory.ru && http://code.google.com/p/aionprivateofficev2
 */
require_once "core/application/models/mreg/mreg.php";
require_once "core/application/classes/errorClass.php";

class registration_Controller extends Registration_Model {

    /**
     *
     * @var static $_instance
     * @var object $_lang
     * @var array $_params
     */
    private static $_instance = NULL;
    public $_lang;
    private $_params = array();
    public $_secret = "";
    private $_number = 0;

    public static function getInstance() {
        if (is_null(self::$_instance)) {
            $class = __CLASS__;
            self::$_instance = new $class();
        }
        return self::$_instance;
    }

    private function catchParams() {
        /**
         * 	информация для регистрации
         */
        $params = array(
            'login' => $_POST['login'],
            'email' => $_POST['email'],
            'password' => $_POST['password'],
            'question' => $_POST['question'],
            'answer' => $_POST['answer'],
            'secretWord' => $this->generateText()
        );
        return $params;
    }

    public function generateText() {
        /**
         * генерация секретного слова
         */
        $this->_number = rand(3, 10);
        $arr = array('а', 'б', 'в', 'г', 'д', 'е',
            'ё', 'ж', 'з', 'и', 'й', 'к',
            'л', 'м', 'н', 'о', 'п', 'р',
            'с', 'т', 'у', 'ф', 'х', 'ц',
            'ч', 'щ', 'ш', 'э', 'ю', 'я'
        );
        // генерация секретного слова
        for ($i = 0; $i < $this->_number; $i++) {
            // Вычисляем случайный индекс массива
            $index = rand(0, count($arr) - 1);
            $this->_secret .= $arr[$index];
        }
        return $this->_secret;
    }

    public function register() {
        /**
         *  основная функция регистрации
         */
        $this->_lang = $this->getLanguage();
        $this->_params = $this->catchParams();
        $this->_params['email'] = filter_var($this->_params['email'], FILTER_VALIDATE_EMAIL); //Валидация мыла


        /**
         * 	регистрация, отправка данных
         * 
         * 	@method send_register
         * 		@params login
         * 		@param password
         * 		@param email
         * 		@param question
         * 		@param answer
         * 		@param secretWord
         */
        try {
            $this->send_register($this->_params['login'], $this->cryptPassword($this->_params['password']), $this->_params['email'], $this->_params['question'], $this->_params['answer'], $this->_params['secretWord']);
            $this->echoSuccess($this->_lang->language['successReg']);
            echo "<script language='JavaScript'> alert ('Так же, запомните Ваше секретное слово, которое потребуется при восстановлении пароля'); </script>";
            echo "<script language='JavaScript'> alert ('Это слово: " . $this->generateText() . "'); </script>";
        } catch (Exception $e) {
            echo $e->getMessage();
            error::getInstance($this->_lang->language['defaultError']);
        }
        unset($this->_params, $this->_lang);
    }

    public function issetThisAccount($account) {
        /**
         *  проверка аккаунта на существование
         */
        if (!$this->issetName($account)) {
            echo "
                    <script language='JavaScript'>
                    $.jmessage('Аккаунт не найден', 'Вы можете использовать это имя', 5000, 'jm_message_success');
                    </script>";
            echo "<script language='JavaScript'>  openAll(); closeLogin(); </script>";
        } else {
            echo "
                    <script language='JavaScript'>
                    $.jmessage('Ooooops', 'Это имя уже занято :(', 5000, 'jm_message_error'); 
                    </script>";
        }
    }

    public function issetThisEmail($email) {
        /**
         * 	если в системе есть такое мыло
         * 
         */
        if ($this->issetEmail($email)) {
            echo "<script language='javascript'>$.jmessage('Ooops.. ','Этот адрес электронной почты уже занят кем-то :(', 5000, 'jm_message_error');</script>";
        } else {
            echo "<script language='javascript'>$.jmessage('Yeah!', 'Адрес электронной почты свободен', 5000, 'jm_message_success');openRegisterButton();</script>";
        }
    }

}

?>
